Spread spectrum techniques have proven useful in a variety of communications applications, including cellular telephones, wireless local area networks, and military communications. Wireless spread spectrum systems operate by using a relatively large amount of spectrum bandwidth to communicate messages. The large bandwidth is consumed by spread spectrum encoding the message data using a pseudonoise code. The two most common types of spread spectrum transmission are frequency hopping, where the pseudonoise code is used to pseudo randomly change the transmission frequency on a periodic basis, and direct sequence, where the pseudonoise code is used to sequentially modulate the transmit signal at a high rate relative to the underlying message data. One advantage provided by spread spectrum techniques is the ability to build a transmitter which is difficult for an unauthorized user to detect.
Another advantage of spread spectrum techniques is the ability to share channels among multiple users. For example, in code division multiple access (CDMA), different pseudonoise codes are assigned to different users to be used as their spreading codes. Generally, when the receiver is dispreading a signal with a matching dispreading code, the signal is received and other users, having different spreading codes, are treated as interference and rejected. This aspect of spread spectrum is described further below.
In direct sequence spread spectrum, each sequence symbol of the pseudorandom code is referred to as a chip. The time duration of a chip is referred to as a chip time, and hence the chip rate (also referred to as “spreading code frequency”) is the reciprocal of the chip time. The chip rate is typically an order of magnitude (or more) higher than the data rate of the underlying information to be transmitted, although lower ratios are sometimes used.
In order to detect a spread spectrum transmission, it is generally necessary to know the pseudonoise code beforehand. Furthermore, to extract the message data, it is generally necessary to know the timing of the pseudonoise code. For example, in a direct sequence system, this can be accomplished by knowing the code frequency (the rate at which the pseudonoise code advances through its chip sequence) and the starting time and position within the sequence of the pseudonoise code (sometimes referred to as the phase of the code). A signal for which the spread spectrum receiver knows the pseudonoise code, pseudonoise code phase and pseudonoise code frequency can be referred to as a synchronized signal.
One interesting property of spread spectrum systems is that unsynchronized signals appear as noise to a spread spectrum decoder, and are suppressed by the decoder. For example, as mentioned above, in CDMA different users can be assigned different pseudonoise codes, in which case a receiver will reject signals from users other than the specific user to whose code the receiver is synchronized. As another example, all users can be assigned a common pseudonoise code, but each user transmits using a different pseudonoise code start time. This results in each user having a different pseudonoise code phase. A receiver tuned to the common pseudonoise code at a particular timing (phase) will reject other users with different code timing (phase). This latter example is sometimes referred to as spread-ALOHA.
Detection of a spread spectrum signal can be performed by using correlation techniques. The spread spectrum signal is compared to a reference spreading code which is generated using a hypothesized code frequency and phase. When the reference spreading code has the same hypothesized code frequency and phase as the actual code frequency and phase of the input signal, a large correlation result is obtained. If, however, the reference spreading code is offset in code frequency or code phase from the input signal, a smaller result is obtained.
As is known in the art, the autocorrelation function of a code corresponds to the calculation of the correlation result when correlating a code with a time shifted version of itself. For an ideal code, the autocorrelation has a large peak result for time shifts of zero, and zero for all other time shifts. Unfortunately, there are few codes which have this ideal autocorrelation, and even those codes which are close to ideal often have other aspects which are undesirable (e.g., complexity or limited code length). For various reasons, many systems use non-ideal codes which have autocorrelation sidelobes. An auto correlation sidelobe is a local peak of the autocorrelation function.
While sidelobes are generally less than the peak value, sidelobes can be mistaken as the peak correlation value in some circumstances. For example, when searching for a spread spectrum signal by performing correlation, it can be difficult to distinguish a sidelobe from the actual correlation peak. Such sidelobe detections are sometimes referred to as false detections.
False detections are undesirable because it is generally not possible to detect message data since the sidelobe does not correspond to correct alignment between the reference code and the spread spectrum signal. Sidelobes can also be mistaken as additional signals, so even if the peak is properly detected, sidelobes can be mistaken as additional signals. False detections tie up resources, and thus are undesirable.